Digital filters have been in existence for many years, and a large amount of prior art is available both in the literature (Rabiner, L. R. and Gold, B. "Theory and Application of Digital Signal Processing", Prentice Hall 1975) as well as in issued patents (e.g. U.S. Pat. Nos. 4,063,060; 4,034,197 and 5,170,369).
Many digital filters use integer arithmetic rather than floating point arithmetic in order to simplify the construction of such filters. The use of integer numbers and integer arithmetic imposes a finite precision on the coefficients and data used in such filters. Increasing the precision of the coefficients allows the filter to better implement desired frequency response.
Digital filters are constructed with different number representations depending on the filter and data types. The most popular of these are unsigned binary and 2's complement, although other representations exist (e.g. sign and magnitude and 1's complement). Digital filters are generally constructed using one or the other system such that all of the coefficients, data and arithmetic elements adhere to the chosen number system. For example, using 2's complement representation and arithmetic, the filter coefficients may be considered as fractional unsigned numbers for positive numbers or fractional 2's complement numbers for negative numbers (although other abstractions and conceptual analysis may be used to obtain the same result). The filtered output signals are chosen to be the most significant bits that the filter produces. As discussed above, the filter may be designed to any precision by appropriate selection of coefficient word length. Intermediate and final results may be rounded or truncated to any smaller precision.
In prior art digital filters, the formatting of the input data to the filter as one of either 2's complement or unsigned binary integer changes the significance of the binary numbers that are produced by the multiplier within the filter. This requires that circuitry must be included to route the multiplier results from different locations depending upon whether the data is 2's complement or unsigned.
Table 1, below, shows the significance of the results for an 8 bit multiplier and multiplicand depending upon whether the data is 2's complement or unsigned. Although 2's complement is not structured as sign and magnitude, Table 1 indicates that the first bit is a sign bit by using an "s" and the remaining data bits are indicated with a "d". Thus, an 8 bit 2's complement number can range from 127 (binary 01111111) to -128 (100000001). The 16 bit product is indicated as having two sign bits since the sign bits are always the same unless 1000000 is multiplied by 1000000. It is known in the art how to design filters that do not use 1000000 as a coefficient. The 8 most significant bits of the product are shown in Table 1 by bold type.
TABLE 1 __________________________________________________________________________ Binary Multiplication With Unsigned and 2's Complement Numbers Description Multiplier Multiplicand Product __________________________________________________________________________ unsigned multiplier dddddddd dddddddd dddddddddddddddd unsigned multiplicand 2's Complement Multiplier sddddddd dddddddd sddddddddddddddd unsigned multiplicand unsigned multiplier dddddddd sddddddd sddddddddddddddd 2's Complement Multiplicand 2's Complement multiplier sddddddd sddddddd ssdddddddddddddd* 2's Multiplier Multiplicand __________________________________________________________________________ *unless both the multiplier and multiplicand are 10000000
Traditional multipliers are available for implementing either integer or 2's complement arithmetic, but not both.